[레포트] AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례 #AWSSummitOnlineKorea
안녕하세요! Classmethod 주식회사 엔지니어 이병현이라고 합니다!
이번 AWS Summit Online Korea의 세션을 들었던 내용을 정리해보려 합니다.
AWS Summit Online Korea AWS의 세션 영상, 슬라이드 자료 등 도움이 되는 것들이 많이 있으므로 관심이 있으시다면 신청하셔도 좋을 것 같습니다. 지금 신청하셔도 볼 수 있습니다! 한국뿐만 아니라 미국&캐나다, 호주&뉴질랜드, 아세안, 인도의 세션들도 같이 보실 수 있습니다.
제가 정리한 세션은 김용기 님 (솔루션즈 아키텍트, AWS) 의 AWS 스토리지 마이그레이션 서비스 및 대규모 데이터 전송 사례 입니다.
온프레미스 환경에서 스토리지 종류
IDC 스토리지
- 블록 스토리지
- 하나의 서버가 하나의 볼륨을 마운트 하는 방식입니다.
- LUN(Logical Unit Number)이 연결되어있어서 어플리케이션이 해당 볼륨을 마운트해서 읽고 쓸 수 있습니다.
- 파일 스토리지
- NAS(Network Attached Storage)로 볼 수 있습니다.
- 여러 서버들이 하나의 볼륨을 동시에 공유해 사용하는 방식입니다.
- 오브젝트 스토리지
- 비교적 최근에 나온 방식입니다.
- HTTP 프로토콜로 데이터에 접근하는 방식입니다.
Cloud Storage
- AWS 의 서비스
- Amazon EBS (블록 스토리지 서비스)
- Amazon EFS (파일 기반 스토리지 서비스)
- Amazon FSx (파일 기반 스토리지 서비스)
- Amazon S3 (오브젝트 스토리지 서비스)
데이터 마이그레이션에 대한 고민이 생기는 이유
- 온프레미스에서 Cloud로 어떻게 데이터를 넘길지에 대해 생각해야 하기 때문입니다.
- 데이터 이관은 쉬운 작업이 아니라고 합니다.
- 동기화를 위해 서비스 다운 타임이 필요할 수도 있습니다.
- 서비스 담당자라면 어떤 마이그레이션 서비스가 빠른지 생각할 수밖에 없습니다.
데이터 전송을 위한 5가지 고려사항
1) 어떤 데이터를 어느 스토리지로?
2) 한 번만 전송? 또는 지속적 동기화?
3) 단방향? 또는 양방향?
- 온프레미스에서 클라우드로 한 번만 가면 되는지, 다시 클라우드에서 온프레미스로 옮겨져야 하는지를 고려해야 합니다.
4) 데이터양 및 가능한 전송시간은?
- 이 사항에 따라서 사용해야 할 서비스가 달라질 수 있습니다.
5) 네트워크 대역폭 제한은?
- 네트워크의 한계, 최저의 속도, 즉 네트워크 구간의 병목(Bottleneck)이 나는 구간의 속도를 알아야 합니다.
네트워크 대역폭 속도와 데이터 용량 관계
- 대역폭에 따라 걸리는 시간의 차이가 있습니다.
- AWS Direct Connect 은 1 Gbps와 10 Gbps를 제공합니다.
- 10 PB는 124일이 걸리기 때문에 네트워크로는 거의 불가능 합니다.
-> 따라서 10 PB 같은 대용량 데이터는 AWS Snowball 오프라인 전송 서비스를 권고합니다.
처음은 Snowball로 큰 볼륨의 데이터를 오프라인으로 이동시킨 후 증분 데이터만 네트워크로 전송하는 혼합 이관전략도 가능합니다.
AWS 마이그레이션 서비스
오프라인 전송
벌크 데이터, 파일들, 오브젝트들, HDFS(Hadoop Distributed File System), 데이터베이스들에 사용합니다.
- AWS Snowball Edge
- AWS Snowmobile
전용장비를 이용한 오프라인 전송입니다.
온라인 전송
- AWS DataSync (빠른 전송)
- AWS Transfer for SFTP (파일 교환)
- AWS Direct Connect (직접 연결)
AWS Direct Connect는 높은 대역폭을 제공해줍니다. 1 G, 10 G를 제공해주는 네트워크 서비스입니다.
데이터베이스와 서버 마이그레이션
- AWS Database Migration Service
- CloudEndure an AWS Company
데이터뿐만 아니라 데이터베이스와 서버 자체를 마이그레이션 하는 경우에 사용하는 서비스입니다.
스트리밍 데이터
- Amazon Kinesis family
- Data Firehose
- Data Streams
- Video Streams
스트리밍 데이터를 그대로 온프레미스, 클라우드에서 받아서 AWS Storage로 저장을 할 수 도 있습니다.
하이브리드 게이트웨이
- AWS Storage Gateway family (APN partner product)
데이터 마이그레이션 서비스
AWS Transfer for SFTP
- 온프레미스 파일들을 바로 S3로 저장 가능합니다.
- 관리형 서비스 (설치가 필요 없습니다.)
- 클라이언트는 FileZila, WinSCP 등을 사용합니다.
- AWS Transfer for STFP 에 S3 연결합니다.
- 데이터 저장 타겟이 S3 (오브젝트로 저장)
- SSH 키 기반 인증, 패스워드 인증을 사용합니다.
- API Gateway, Lambda 등 AWS 서비스와 연결 가능합니다.
AWS DataSync
- S3와 EFS에 데이터를 전송할 수 있는 데이터 동기화 서비스입니다.
- 네트워크를 통해 데이터 전송합니다.
- 쉽고 빠르게 데이터를 보낼 수 있습니다.
- 데이터 동기화 기능이 있습니다.
- 클라우드 데이터를 통해 온프레미스의 데이터가 파손되었을 시에 복구 가능합니다.
AWS Storage Gateway
온프레미스에서 클라우드 스토리지에 가상으로 접근합니다.
- 온프레미스 백업, 스토리지 파일 공유, 애플리케이션이 클라우드에 낮은 지연시간으로 접근합니다.
The AWS Storage Gateway family
- 파일 게이트웨이
- 로컬 캐시 기능 파일 어플리케이션, Amazon S3의 오브젝트 저장 혹은 접근합니다.
- NFS(Network File System)/SMB(Server Message Block) -> S3에 오브젝트 형식으로 저장합니다.
- 볼륨 게이트웨이
- 온프레미스 블록스트리지 백엔드로 Amazon EBS 스냅샷과 클론, 로컬캐시 기능 제공합니다.
- iSCSI(Internet Small Computer System Interface) 프로토콜을 통해 블록스트리지를 서버에서 마운트하여 사용할 수 있게 합니다.
- 마운트 된 데이터는 EBS 스냅샷으로 저장함, 이 스냅샷을 EC2에서 마운트하여 사용 가능합니다.
- 테잎 게이트웨이
- 물리 테이프 백업을 대체하여 클라우드 스토리지 저장소로 활용
- VTL(Virtual Tape Library) 형태로 저장됩니다.
위 3가지의 게이트웨이를 Storage Gateway에 vm 형태로 제공하면 https로 암호화하여 AWS 서비스를 사용 가능합니다.
AWS Snowball Edge
오프라인 전송으로 별도의 하드웨어 장비를 가지고 IDC에서 데이터를 저장한 후 차를 통해 운반하고 AWS Center 에서 데이터를 바로 S3로 옮겨주는 서비스입니다.
AWS Snowball 종류
- Snowball
- Snowball Edge
- Snowball Mobile
한국에서는 Snowball Edge를 주로 사용합니다.
- Snowball은 데이터 저장장치만 제공합니다.
- Snowball Edge 저장장치 + EC2 인스턴스가 내장되어 있습니다.
- Snowball Mobile은 대용량의 컨테이너를 통해 넘어가기 때문에 대단위의 전송입니다.
AWS Snowball Edge Compute or Storage Optimized
- 42 또는 100TB 스토리지 용량
- 종단 데이터 암호화
- 견고한 8.5G 충격보호 케이스
- 비와 먼지 방지
- 로컬 컴퓨트, 메시징, 캐싱을 위한 AWS Greengrass(IOT와의 연결성을 위함) 지원
- 에지 컴퓨트를 위한 EC2/AMI 지원
- GPU(Optional)
스토리지 전송 서비스 비교
DataSync | Transfer for STFP | Snowball Edge | Storage Gateway | |
---|---|---|---|---|
전송 스토리지 | S3, EFS, FSx | S3 | S3 | S3, EBS, Backup |
방향성 | 양방향 | 양방향 | 단방향 | 양방향 |
데이터 용량 | S3 무제한 EFS 페타단위 | S3 무제한 | 하드웨어 전송 | S3 무제한 EBS 16TB |
전송속도 | 네트워크 의존 | 네트워크 의존 | 하드웨어 전송 | 네트워크 의존 |
- 클라우드가 S3인 경우 어떤 서비스 사용해도 가능합니다.
- EFS, FSx의 경우 DataSync를 사용하는 것이 직접 보내기 때문에 편리합니다.
- EBS로 보낼 경우 Storage Gateway가 직접 보내기 때문에 편리합니다.
- 양방향, 단방향의 경우를 고려합니다.
- 대용량 데이터의 경우 Snowball Edge 사용을 권고합니다.
대량의 데이터 전송 사례
롯데의 통합 온라인몰
고객 당면 과제
- 서비스 개발을 위해 제품 이미지 업로드 필요
- 제품 이미지 파일들을 최대한 빨리 클라우드로 전송
- 파일 개수: 약 140,000,000 개
- 전체 용량: 17TB
- 각 파일 크기: 대부분 200K 이하, 일부 몇 메가 단위
- 원본 스토리지: IDC에 있는 NAS 스토리지
- 요구 사항:
- S3에서 신규 파일 이름으로 변경 필요
- 파일 경로 및 이름 목록 별도 보유
작은 파일들을 옮기는 것이 가장 문제가 되었습니다.
Direct Connect를 사용하고 있었지만 만약 데이터를 Direct Connect로 보낸다면 너무 많은 대역폭을 사용하기 때문에 Snowball Edge 로 옮기자고 결론이 나왔습니다.
1차 시도
- Snowball Edge HW 설치 in IDC(Internet Data Center)
- AWS cli, Snowball Edge, Python 설치
- Snowball Edge unlock 작업
- 복제수행: aws s3 cp file1.jpg s3://10.0.0.1:8080/bucket/newfile1.jpg
- 5일 동안 2,000만개 파일 전송
- Snowball Edge 반납
Snowball Edge 절차 및 소요 시간
- AWS Console로 신청 (1~3 일 소요)
- IDC로 Snowball Edge가 오게 되고 연결을 함 (1~2일 소요)
- 데이터 복제 (소요 시간은 파일 전송 속도에 따름)
- AWS Console로 반납 신청하면 수거해 감 (1~2일 소요)
- S3 버킷으로 전송 (1~N 일 소요)
데이터 복제를 하는 시간도 많이 걸리지만 S3 버킷으로 전송하는 시간이 오래 걸린다고 합니다.
1차 결과
- Size: 2408.5 GB
- Objects: 19,567,430
- Transfer Rate: 6.4 MB/s
2천만개에 5일 -> 1억 4천만개면 35일 -> S3 업로딩 시간 35일
전체 소요시간이 70일 예상이 되어 개선방안을 찾게 됩니다.
해결 방법
스크립트
- 커넥션 타임을 줄였습니다.
- Tar를 사용하여 뭉쳤습니다.
- 뭉친 데이터는 메모리에 저장하였습니다.
커넥션 타임을 줄이기 위해 파일들을 tar 라이브러리로 뭉치게 됩니다. 이러한 데이터는 메모리상에 저장할 수 있도록 하였다고 합니다.
남아있는 시간 5일과 2차 Snowball Edge가 오는 날짜를 합쳐서 약 일주일 동안 스크립트를 작성하였다고 합니다.
2차 시도
- Tar 파일 정상적으로 압축 성공합니다.
- Smart_open의 메타데이터 기록 미지원
- But, Tar 파일 업로드 후, Snowball Edge안에서 메타데이터 "snowball-auto-extract=true" 기록을 실패합니다.
- 로컬디스크에 tar 파일 생성 후, Snowball Edge로 업로드 할 때 메타데이터 기록하여 성공합니다.
Smart_open이라는 라이브러리를 사용했는데 메타데이터가 기록되지 않는 것을 발견하게 됩니다.
메타데이터가 기록이 되지 않은 부분을 해결하기 위해 온프레미스 내에서 압축을 한 뒤 메타태그를 붙이는 방식으로 해결하였다고 합니다.
2차 결과
- Size: 14,708 GB
- Objects: 1,080
- Transfer Rate: 169.1 MB/s
7배의 시간을 줄여 2주 내에 데이터 전송을 완료하게 됩니다.
결과 비교
Targer | 파일 개수 | 파일 용량 | NAS -> Snowball Edge 소요시간 |
Snowball Edge-> S3 소요시간 | 실패 오브젝트 |
---|---|---|---|---|---|
1차 성능 | 19,567,430 | 2,408 GB | 5일 | 113 시간(4D + 17H) | 954 |
2차 성능 | 119,577,235 | 14,708 GB | 5일 | 26시간 | 0 |
- 7배 정도의 성능이 향상되었습니다.
- 고객분께서 서비스 개발에 집중할 수 있게 되었습니다.
- 대량의 작은 파일들을 Snowball Edge로 클라우드에 올린 사례입니다.
정리
- 데이터마이그레이션시 고려사항
- 클라우드에서 목표 스토리지
- 온라인 또는 오프라인 전송
- 네트워크 대역폭에
세션 처음에 나온 데이터 전송을 위한 5가지 고려사항 을 기반으로 하여 전략을 세우고, 자신의 상황과 AWS가 제공하는 마이그레이션 서비스를 매칭하여 어떤 서비스가 어울리지 고려 해야합니다.
- 다양한 마이그레이션 서비스
- DataSync
- Transfer for SFTP
- Snowball Edge
- Storage Gateway
- 작은 파일이 많을 때는 대용량으로 뭉쳐서 전송해야 합니다.
- 빠른 시간내에 클라우드로 전송하기 위해 필요합니다.
후기
데이터를 온프레미스에서 클라우드로 이관할 시 이러한 생각과 작업이 필요하다는 것을 알게 되어 좋았네요. 단순히 어떤 서비스가 있는지 나열하는 것만이 아니라 실제 사례를 들어주니 잘 와 닿았던 것 같습니다. 공부가 많이 되었습니다. ?
정리한 내용이 잘 전달되었으면 좋겠네요. 읽어주셔서 감사합니다!